-- @owner: songjing20
-- @date: 2022-8-29
-- @testpoint: 自定义函数中使用xml类型

--step1:创建函数入参、返回值和自定义变量类型使用xml;expect:成功
drop function if exists func_xml_0046(xml);
drop function if exists func_xml_0046(text);
create or replace function func_xml_0046 (c1 xml) returns xml as $$
declare
c_xml xml := xmlconcat('<foo/>', c1);
begin
    return (c_xml);
end;
$$ language plpgsql;
/

--step2:调用函数;expect:成功
select func_xml_0046(xml'<ele one="1">content</ele>');
call func_xml_0046(xmlelement(name element, xmlattributes (1 as one), 'content'));

--step3:创建函数，出参包含xml类型;expect:创建成功
create or replace function func_xml_0046(in text, out f1 text, out f2 xml)
as $$ select $1, xmlconcat(xmlcomment('hello'), xmlelement(name test, $1)) $$
language sql;
/

--step4:调用函数;expect:成功 42 <!--hello--><test>42</test>
select * from func_xml_0046(42);

--step5:清理环境;expect:成功
drop function func_xml_0046(xml);
drop function func_xml_0046(text);
